package Terminal.TechnicalServices.JDom;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jdom2.*;
import org.jdom2.input.SAXBuilder;
import org.jdom2.input.sax.XMLReaders;
import org.jdom2.output.XMLOutputter;

/**
 * Fornisce all'applicazione i metodi di jdom per gestire l'accesso al file di configurazione XML
 * @author Gruppo 6
 *
 */
public class XMLJDomAdapter {

	private String configPath = "src\\configuration\\";
	
	/**
	 * Scrive su file xml il contenuto di un albero dom 
	 * @param fname destinazione del file di output
	 * @param doc l'albero dom
	 */
	public void writeToFile(String fname, Document doc)
	{
		String fileName = configPath + fname;
		
		try
		{
			FileOutputStream channelOut = new FileOutputStream(fileName);
			XMLOutputter terminalOut = new XMLOutputter(null, null);
			
			terminalOut.output(doc, channelOut);
			
			channelOut.flush();
			channelOut.close();
		}
		catch (IOException e)
		{
			System.err.println(e);
		}
	}
	/**
	 * 
	 * Restituisce l'albero dom dichiarato nel file di configurazione fileName
	 * valida il documento xml in fileName mediante la dtd dichiarata al suo interno
	 * 
	 * @param fileName percorso del file di input
	 * @return albero dom
	 * @throws JDOMException
	 */
	public Document readFromFile(String fileName) throws JDOMException
	{
		Document doc = null;
		SAXBuilder sax = new SAXBuilder();
		sax.setXMLReaderFactory(XMLReaders.DTDVALIDATING);
		
		try 
		{
			doc = sax.build(new File(fileName));
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
		
		return doc;
	}
	
}
